package com.hzw.saas.api.workspace;

import java.io.File;
import java.util.List;

import com.hzw.saas.api.workspace.bo.UserWorkspaceFileBo;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 *
 * </p>
 *
 * @author sonam
 * @since 2021/2/2 11:39
 */
public interface IWorkspaceResourceService {

    String dealPath(String userId, String path);

    /**
     * 创建目录
     *
     * @param dirPath
     */
    File createDir(String userId, String dirPath);

    /**
     * 删除目录
     *
     * @param dirPath
     * @param rf
     */
    void remove(String userId, String dirPath, boolean rf);

    /**
     * 重命名文件或者目录
     *
     * @param path
     * @param name
     */
    File rename(String userId, String path, String name);

    /**
     * 移动目录或者文件
     *
     * @param path
     */
    void move(String userId, String path, String targetDir);

    /**
     * 复制目录或者文件
     *
     * @param path
     */
    void copy(String userId, String path, String targetPath);

    /**
     * 获取当前用户工作空间所有文件的数量
     *
     * @param userId
     * @return
     */
    long countFiles(String userId);

    /**
     * 获取当前路径下的资源文件的大小
     *
     * @param userId
     * @param dirPath
     * @return 文件大小 Byte
     */
    long getFileSize(String userId, String dirPath);

    /**
     * 获取看作空间的文件列表
     *
     * @param userId
     * @param path
     * @return
     */
    List<UserWorkspaceFileBo> getFileList(String userId, String path);

    /**
     * 上传文件
     *
     * @param userId
     * @param file
     * @param path
     */
    void uploadFile(String userId, MultipartFile file, String path);

    /**
     * 下载文件
     *
     * @param userId
     * @param filepath
     */
    void downloadFile(String userId, String filepath);

}
